/* 
 * File:   ThreadMngEventRld.h
 * Author: batista
 *
 * Created on 15 de Março de 2013, 09:06
 */

#ifndef THREADMNGEVENTRLD_H
#define	THREADMNGEVENTRLD_H
#include <vector>
#include <cstring>
#include <string>
#include <iostream>
#include <cstdlib>
#include <unistd.h>
#include <ucommon/ucommon.h>
#include "Event.h"
#include "DbConn.h"
#include "TimeUtil.h"
#include "ShowMsg.h"

using namespace std;
using std::string;

using namespace UCOMMON_NAMESPACE;
//

class ThreadMngEventRld : private ShowMsg, public JoinableThread {
public:
    ThreadMngEventRld();
    virtual ~ThreadMngEventRld();
    //
    void run(void);
    //

    DbConn* GetDbconn() const {
        return dbconn;
    }

    void SetDbconn(DbConn* dbconn) {
        this->dbconn = dbconn;
    }

    DirFile* getDirfl() const {
        return dirfl;
    }

    void setDirfl(DirFile* dirfl) {
        this->dirfl = dirfl;
    } 
    
    
    long getTimeout_attend() const {
        return timeout_attend;
    }

    void setTimeout_attend(long timeout_attend) {
        this->timeout_attend = timeout_attend;
    }

private:
    /**
     * Metodo responsavel por aplicar
     * a regra de negocio para o protolo
     * e adicionar na base de dados.
     */
    void runApplyRulesForProtocol(Event *nevent);

    /**
     * Metodo responsavel por pegar a opção
     * para aplicar para o evento.
     * @param nevent
     * @return 
     */
    int  getOptionForApply(Event *nevent);

    //
private:
    DbConn *dbconn;
    TimeUtil *tmut;
    DirFile *dirfl;
    Event *event;
    //
    long timeout_attend;
};

#endif	/* THREADMNGEVENTRLD_H */

